package chemtools_logica.BDL.IL;

import chemtools_logica.Beans.EventoxinsumoBean;
import chemtools_logica.Beans.InsumoBean;
import chemtools_logica.Beans.OrdenproduccionBean;

import chemtools_logica.Beans.OrdenproduccionxTipoproduccionBean;

import chemtools_logica.Entidades.Detalleformula;
import chemtools_logica.Entidades.Eventoxinsumo;
import chemtools_logica.Entidades.Formula;
import chemtools_logica.Entidades.Insumo;
import chemtools_logica.Entidades.Ordenproduccion;
import chemtools_logica.Entidades.Tipoproductoxordenproduccion;
import chemtools_logica.Entidades.Transformacion;

import chemtools_logica.Entidades.Vista.Graficoinsumoenprod;
import chemtools_logica.Entidades.Vista.Graficoinsumoenprodpormes;
import chemtools_logica.Entidades.Vista.Graficoordenescumppormes;
import chemtools_logica.Entidades.Vista.Graficoordenessegunlab;
import chemtools_logica.Entidades.Vista.Graficoprodenprodpormes;
import chemtools_logica.Entidades.Vista.Graficoproductosenprod;

import java.util.Date;
import java.util.List;

import javax.ejb.Local;

@Local
public interface BDL_SFTransformacionesLocal {
    Transformacion persistTransformacion(Transformacion transformacion);

    Transformacion mergeTransformacion(Transformacion transformacion);

    List<Transformacion> getTransformacionFindAll();
    
    List<Ordenproduccion> busquedaOrdenes(OrdenproduccionBean bean);
    
    List<Tipoproductoxordenproduccion> busquedaProductosOrdenes(OrdenproduccionBean bean);
    
    List<Formula> busquedaFormulasCompatibles(int id);
    
    List<Detalleformula> busquedaDetalle(int idFormula);
    
    List<Detalleformula> busquedaItemTipoFromDetalle(int idFormula, int idProducto);
    
    List<Transformacion> buscaTransformacion(String nombre, Date fechaMin, Date fechaMax);
    
    List<Eventoxinsumo> buscaInsumosProd(String idProducto);
    
    List<Graficoinsumoenprod> callProcedureGraficoInsumoEnProd(Date fechaMin, Date fechaMax);
    List<Graficoinsumoenprodpormes> callProcedureGraficoInsumoEnProdPorMes(Date fechaMin, Date fechaMax);
    List<Graficoordenescumppormes> callProcedureGraficoOrdenesCumpPorMes(Date fechaMin, Date fechaMax);
    List<Graficoordenessegunlab> callProcedureGraficoOrdenesSegunLab(Date fechaMin, Date fechaMax);
    List<Graficoprodenprodpormes> callProcedureGraficoProdEnProdPorMes(Date fechaMin, Date fechaMax);
    List<Graficoproductosenprod> callProcedureGraficoProductosEnProd(Date fechaMin, Date fechaMax);

    Insumo getInsumoParaTransformar(String idInsumo);
    void updateCantidadInsumo(InsumoBean ins);
    void makeEvento(EventoxinsumoBean evt);
}
